package com.hjx.other;

/**
 * 判断一个矩形是否能容纳两个圆
 *
 * 基本条件之一是能容纳下直径大的圆即 min(a,b) >= max(r1,r2) * 2
 * 再一个是让大圆与长边相切
 *
 * 参考：https://blog.csdn.net/zhouzi2018/article/details/82143693
 *
 * @author houjinxin
 * @version 创建时间：2019/11/1.
 */
public class JudgeRect {

    public static boolean judge(double a, double b, double r1, double r2) {
        if (a > b) {
//            swap(a, b);

            b = a + b;
            a = b - a;
            b = b - a;
        }
        //r2 大圆半径
        if (r1 > r2) {
            r1 = r2 + r1;
            r2 = r1 - r2;
            r1 = r1 - r2;
        }
        //a是短边 短边若小于大圆直径直接返回false
        if (a < r2 * 2) {
            return false;
        }
        //两圆相切时圆心距
        double z = r1 + r2;
        //三角形的底边之一
        double x = a - z;
        //三角形的底边之一
        double y = b - z;
        //底边不存在 则三角形不存在
        if (x < 0 || y < 0) {
            return false;
        }
        //三角形存在的条件
        System.out.println(Math.pow(x * x + y * y, 0.5));
        System.out.println(z * z);
        return x * x + y * y >= z * z;
    }

    public static void main(String[] args) {
        System.out.println(judge(21, 29.5, 7.5, 7.5));
    }

}
